Шаг 221 - Использование запроса для перебора.

Мы про запрос с Вами говорили в шагах.
Шаг 218 - От перебора документов к запросу.
Шаг 219 - От перебора документов к запросу дальше.

Из этих шагов понятно что запрос хорош для получения сводный данный по суммам. Заменять перебор запросом оправданно только в редких случаях. Давайте попробуем понять как все это работает. Нам сейчас важна группировка. Итак сгруппируем по поставщику услуг ( перевозчик в данном контексте).

ТекстЗапроса = 
	"//{{ЗАПРОС(Сформировать)
	|Период с ВыбНачПериода по ВыбКонПериода;
	|Поставщик = Документ.ПеревозкаТоплива.Поставщик;
	|СуммаОбщая = Документ.ПеревозкаТоплива.СуммаОбщая;
	|Группировка Поставщик;
	|"//}}ЗАПРОС
	;
	// Если ошибка в запросе, то выход из процедуры
	Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
		Возврат;
	КонецЕсли;

	// Подготовка к заполнению выходных форм данными запроса
	Таб = СоздатьОбъект("Таблица");
	Таб.ИсходнаяТаблица("Сформировать");
	// Заполнение полей "Заголовок"
       Пока Запрос.Группировка("Поставщик") = 1 Цикл
	   	 	Таб.ВывестиСекцию("Секция_1");
       КонецЦикла;

В данном случае мы получим суммы по поставщику.

221_1.gif (1810 b)

А вот если сгруппировать по сумме то мы получим более развернутый отчет. Каждый документ будет отражен суммой.

	ТекстЗапроса = 
	"//{{ЗАПРОС(Сформировать)
	|Период с ВыбНачПериода по ВыбКонПериода;
	|Поставщик = Документ.ПеревозкаТоплива.Поставщик;
	|СуммаОбщая = Документ.ПеревозкаТоплива.СуммаОбщая;
	|Группировка СуммаОбщая;
	|"//}}ЗАПРОС
	;
	........
       Пока Запрос.Группировка("СуммаОбщая") = 1 Цикл
	   	 	Таб.ВывестиСекцию("Секция_1");
       КонецЦикла;

Смотрим.

221_2.gif (2348 b)

Hosted by uCoz